//
//  News.swift
//  NetEasyNew
//
//  Created by 蔡万鸿 on 15/5/25.
//  Copyright (c) 2015年 黄花菜. All rights reserved.
//

import UIKit

class News: NSObject {
    
    ///标题
    var title: String?
    /// 摘要
    var digest: String?
    /// 跟贴数量
    var replyCount: Int = 0
    /// 配图地址
    var imgsrc: String? {
        didSet {
            iconURL = NSURL(string: imgsrc!)
        }
    }
    
    // icon的 URL
    var iconURL: NSURL?
    
    //属性数组
    private static let properties = ["title","digest","replyCount","imgsrc"]
    
    /**
    加载新闻数据
    */
    class func loadStatus(URLString: String,completion:(news: [News]?)->()) {
        
        NetworkTools.requestJSON(.GET, URLString: URLString, parameters: nil) { (JSON) -> () in
            
            var kk = (JSON as! NSDictionary).keyEnumerator().nextObject() as! String
         
            if JSON != nil {
                
                if let array = (JSON as! NSDictionary)[kk] as? [[String: AnyObject]] {
                    
                    let result = self.news(array)
                    
                    //print("\(result)")

                     completion(news: result)
                    
                    return
                }

            }
            completion(news: nil)

        }
    }

    // 将字典数组转换成 微博 数组
    private class func news(array: [[String: AnyObject]]) -> [News]? {
        
        if array.count == 0 {
            return nil
        }
        
        // 实例化一个可变的数组
        var arrayM = [News]()
        
        for dict in array {
            arrayM.append(News(dict: dict))
        }
        
        return arrayM
    }
    
    // 字典转模型，init 函数中，不用写 return
    init(dict: [String: AnyObject]) {
        // 实例化对象
        super.init()
        
        // 使用 KVC 设置数值
        for key in News.properties {
            if dict[key] != nil {

                // 在 swift 中，如果在 构造函数中使用 KVC，需要先 super.init，确保对象被实例化
                setValue(dict[key], forKeyPath: key)
            }
        }

    }
    
    
    // 重写对象的描述信息 - 建议重要的模型类，最好添加一个，方便调试
    override var description: String {
        
        let properties = ["title","digest","replyCount","imgsrc"]
        
        return "\(dictionaryWithValuesForKeys(properties))"
    }
}
